#include<iostream>
#include<vector>
using namespace std;

//LeetCode.283 移动零

void moveZeroes(vector<int>& nums) {
    int first = 0;
    int last = 0;
    //首先第二个指针遍历到非零元素时就将其放入到第一个指针的位置同时第一个指针向后移动
    while(last<nums.size())
    {
        if(nums[last]!=0)
            nums[first++]=nums[last++];
        else
            last++;
    }
    //将剩下的元素全部置为0
    while(first<nums.size())
        nums[first++] = 0;
}
int main()
{
    vector<int> nums = {0, 1, 0, 3, 12};
    moveZeroes(nums);
    for(auto i:nums)
    {
        cout<<i<<" ";
    }
    return 0;
}